package com.letv.util;

import java.util.Map;

import com.letv.common.Constants;

/**
 * 生成搜索内部主键soKey的工具类：soKey = 渠道_类型_ID
 * @author wenjian
 * 
 */
public class SoKeyUtil {
	
	/**
	 * 
	 * @param src
	 * @param m
	 * @return
	 */
	public static String getSoKey(String src, Map<String, Object> m) {
		String id = null;
		int dataType = StringUtil.convertObjectToInteger(m.get("dataType"));
		
		if (dataType == 4 || dataType == 1) {
			id = String.valueOf(m.get("aid"));
		} else if (dataType == 2) {
			id = String.valueOf(m.get("vid"));
		} else if (dataType == 3) {
			id = String.valueOf(m.get("sid"));
		}
		
		if (dataType == Constants.LIVE) {
			if ("2".equals(StringUtil.convertObjectToString(m.get("type")))) {
				return "mms_live_" + StringUtil.convertObjectToString(m.get("type")) + "_" + StringUtil.convertObjectToString(m.get("tvEnName"));	 
			}
		}
		
		return getSOKey(src, dataType, id);
	}
	
	/**
	 * 
	 * @param src
	 * @param dataType
	 * @param id
	 * @return
	 */
	public static String getSOKey(String src, int dataType, String id) {
		StringBuilder soKey = new StringBuilder();
		soKey.append("mms_");
		
		//渠道
		if (Constants.SRC_PTV.equals(src)) {
			soKey.append("ptv_");
		} else if (Constants.SRC_VRS.equals(src)) {
			soKey.append("vrs_");
		} else if (Constants.SRC_LESO.equals(src)) {
			soKey.append("leso_");
		} /*else if (Constants.SRC_IPTV.equals(src)) {
			soKey.append("iptv_");
		}*/else if (Constants.SRC_LIVE.equals(src)) {
			soKey.append("live_");
		}
		
		//类型
		switch (dataType) {
			case Constants.ALBUM:
				soKey.append("a_");
				break;
			case Constants.VIDEO:
				soKey.append("v_");
				break;
			case Constants.STAR:
				soKey.append("s_");
				break;
			case Constants.LIVE:
				soKey.append("a_");
				break;
			default:
				break;
		}
		
		soKey.append(id);
		
		return soKey.toString();
	}
	
	/**
	 * 通过soKey解析出src
	 * 
	 * @param soKey
	 * @return
	 */
	public static String getSrc(String soKey) {
		String src = null;
		if (soKey.startsWith("ptv_")) {
			src = Constants.SRC_PTV;
		} else if (soKey.startsWith("vrs_")) {
			src = Constants.SRC_VRS;
		} else if (soKey.startsWith("leso_")) {
			src = Constants.SRC_LESO;
		} else if (soKey.startsWith("iptv_")) {
			src = Constants.SRC_IPTV;
		} else if (soKey.startsWith("live_")) {
			src = Constants.SRC_LIVE;
		}
		return src;
	}
	
	/**
	 * 通过soKey解析出dataType
	 * 
	 * @param soKey
	 * @return
	 */
	public static int getDataType(String soKey) {
		int dataType = 0;
		if (soKey.contains("_a_")) {
			dataType = Constants.ALBUM;
		} else if (soKey.contains("_v_")) {
			dataType = Constants.VIDEO;
		} else if (soKey.contains("_s_")) {
			dataType = Constants.STAR;
		}
		return dataType;
	}
	
	/**
	 * 通过soKey解析出ID
	 * 
	 * @param soKey
	 * @return
	 */
	public static String getID(String soKey) {
		return getSoKeySegment(soKey, 3);
	}
	
	/**
	 * 通过soKey解析出website
	 * 
	 * @param soKey
	 * @return
	 */
	public static String getWebSite(String soKey) {
		return getSoKeySegment(soKey, 4);
	}
	
	/**
	 * 取得soKey指定段
	 * 
	 * @param sokey
	 * @param i
	 * @return
	 */
	private static String getSoKeySegment(String sokey, int i) {
		String[] soKeySegments = sokey.split("_");
		
		if (i <= soKeySegments.length) {
			return soKeySegments[i - 1];
		} else {
			return null;
		}
	}
}